package com.bonus.sys.service; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.bonus.core.exception.ZeroAffectRowsException; import com.bonus.sys.AjaxRes; import com.bonus.sys.BaseServiceImp; import com.bonus.sys.CipherHelper; import com.bonus.sys.Page; import com.bonus.sys.UserShiroHelper; import com.bonus.sys.beans.NewRoleBean; import com.bonus.sys.beans.UserBean; import com.bonus.sys.beans.ZNode; import com.bonus.sys.dao.NewRoleDao; import com.bonus.sys.dao.UserDao; @Service("UserService") public class UserServiceImp extends BaseServiceImp implements UserService { protected Logger logger = LoggerFactory.getLogger(UserServiceImp.class); @Autowired private UserDao userDao; @Autowired private NewRoleDao newRoleDao; @Override public UserBean findUserBeanByLoginName(String loginName) { try { UserBean u = userDao.findUserBeanByLoginName(loginName); return u; } catch (Exception e) { logger.error("根据登录名查找用户信息时,发生异常", e); } return null; } @Override public void setPerData(UserBean o) { UserBean cu = UserShiroHelper.getRealCurrentUser(); o.setId(cu.getId()); o.setUpdateTime((new Date())); userDao.updateByPrimaryKeySelective(o); cu.setName(o.getName()); cu.setMail(o.getMail()); cu.setTelphone(o.getTelphone()); } @Override public void setSetting(String skin) { UserBean cu = UserShiroHelper.getCurrentUser(); cu.setSkin(skin); userDao.setSetting(cu); UserShiroHelper.getRealCurrentUser().setSkin(skin); } @Override public int preResetPwd(String opwd, String npwd, String qpwd) { int res = 0; int accountId = UserShiroHelper.getRealCurrentUser().getId(); String loginName = UserShiroHelper.getRealCurrentUser().getLoginName(); if (StringUtils.isNotBlank(opwd) && StringUtils.isNotBlank(npwd)) { if (StringUtils.equals(npwd, qpwd)) { UserBean o = new UserBean(); o.setId(accountId); UserBean odata = userDao.findUserBeanByLoginName(loginName); String oPwdEncrypt = CipherHelper.createPwdEncrypt(loginName, opwd.toUpperCase(), odata.getSalt()); String odataPwdEncrypt = odata.getPasswd(); if (StringUtils.equals(oPwdEncrypt, odataPwdEncrypt)) { String salt = CipherHelper.createSalt(); String pwrsMD5 = npwd.toUpperCase(); o.setPasswd(CipherHelper.createPwdEncrypt(loginName, pwrsMD5, salt)); o.setSalt(salt); userDao.resetPwd(o); res = 1; } else { res = 2;// 密码不正确 } } else { res = 3;// 两次密码不一致 } } return res; } @Override public UserBean findByidcard(String idCard) { return userDao.findByidcard(idCard); } @Override public int sysResetPwd(UserBean o) { int res = 0; String pwd = o.getPasswd(); o.setUpdateTime(new Date()); int userId = o.getId(); if (userId >= 0) { UserBean odata = userDao.selectByPrimaryKey(userId); String loginName = odata.getLoginName(); // 随机密码,以后发邮箱 String salt = CipherHelper.createSalt(); String pwrsMD5 = CipherHelper.generatePassword(pwd); String newPwd = CipherHelper.createPwdEncrypt(loginName, pwrsMD5, salt); o.setPasswd(newPwd); o.setSalt(salt); userDao.resetPwd(o); res = 1; } else { res = 2; } return res; } @Override public List getOrgBeans() { return userDao.getOrgBeans(); } @Override public List getOrgBeansList() { return userDao.getOrgBeans(); } @Override public int insertUser(UserBean o) { int res = 0; String loginName = o.getLoginName(); // 查询数据库是否已经存在用户名 if (StringUtils.isNotBlank(loginName) && (userDao.findCountByLoginName(loginName) == 0)) { String pwrs = "12345678";// 随机密码,以后发邮箱 String pwrsMD5 = CipherHelper.generatePassword(pwrs);// 第一次加密md5, String salt = CipherHelper.createSalt(); o.setPasswd(CipherHelper.createPwdEncrypt(loginName, pwrsMD5, salt)); o.setSalt(salt); o.setCreateTime(new Date()); userDao.insertSelective(o); res = o.getId(); } /* * Connection conn = null; CallableStatement cs = null; try { conn = * DBUtils.getConn(); String sql = "{CALL update_app_menu(?,?)}"; cs = * conn.prepareCall(sql); cs.setInt(1,o.getPostId()); cs.setInt(2,res); * cs.execute(); } catch (SQLException e) { e.printStackTrace(); * }finally { DBUtils.close(conn, cs, null); } */ return res; } @Override public void deleteBatch(String chks) { // 事务删除 if (StringUtils.isNotBlank(chks)) { String[] chk = chks.split(","); List list = new ArrayList(); for (String s : chk) { try { int id = Integer.parseInt(s); UserBean sd = new UserBean(); sd.setId(id); list.add(sd); } catch (Exception e) { } } userDao.deleteBatch(list); } } @Override public List findAllByRole(UserBean o) { return userDao.findAllByRole(o); } @Override public List findAllByNewRole(UserBean o) { return userDao.findAllByNewRole(o); } @Override public void updateUsers(int roleId, String chks) { // 事务删除 userDao.deleteUserRole(roleId); if (StringUtils.isNotBlank(chks)) { String[] chk = chks.split(","); for (String s : chk) { try { UserBean ub = new UserBean(); int id = Integer.parseInt(s); ub.setId(id); ub.setRoleId(roleId); userDao.insertUserRole(ub); } catch (Exception e) { logger.error("插入用户角色表失败!", e); return; } } } } @Override public UserBean findAll(UserBean o) { UserBean userList = userDao.findAll(o); return userList; } @Override public List findAllUser() { return userDao.findAllUser(); } @Override public List findByOrg(UserBean o) { List list = userDao.findByOrg(o); return list; } @Override public List findByRepair() { return userDao.findByRepair(); } @Override public String findCompanyName(UserBean o) { return userDao.findCompanyName(o); } @Override public List getUnit(UserBean o) { return userDao.getUnit(o); } @Override public List findPerson(UserBean o) { return userDao.findPerson(o); } @Override public UserBean findByUserId(String userId, int flag) { return userDao.findByUserId(userId, flag); } @Override public UserBean findUserBeanById(String userId) { return userDao.findUserBeanById(userId); } @Override public List findPersonByOrgId(String orgId) { return userDao.findPersonByOrgId(orgId); } @Override public List findCIdByOrgId(String orgId, String postId) { return userDao.findCIdByOrgId(orgId, postId); } @Override public List findAllPerson() { return userDao.findAllPerson(); } @Override public void insertUserRole(UserBean o) { userDao.insertUserRole(o); } @Override public Integer insertBean(UserBean o) { Date time = new Date(System.currentTimeMillis()); // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); o.setCreateTime(time); // o.setPostId(13); String loginName = o.getLoginName(); // o.setName(loginName); // 查询数据库是否已经存在用户名 if (StringUtils.isNotBlank(loginName) && (userDao.findCountByLoginName(loginName) == 0)) { String pwrs = o.getPasswd(); String pwrsMD5 = CipherHelper.generatePassword(pwrs);// 第一次加密md5; String salt = CipherHelper.createSalt(); o.setPasswd(CipherHelper.createPwd(pwrsMD5, salt)); o.setSalt(salt); } return userDao.insertBean(o); } @Override public UserBean selectUser(String loginName) { // TODO Auto-generated method stub return userDao.selectUser(loginName); } @Override public UserBean getnum(String phonenum) { UserBean user = null; try { user = userDao.getnum(phonenum); } catch (Exception e) { e.printStackTrace(); } return user; } @Override public List findAllInternalEmp() { return userDao.findAllInternalEmp(); } @Override public List getUserList() { // TODO Auto-generated method stub return userDao.getUserList(); } @Override public List getDeptEmpByDeptId(UserBean o) { return userDao.getDeptEmpByDeptId(o); } @Override public Page findByPageOfWebUser(UserBean o, Page page) { try { page.setResults(userDao.findByPageOfWebUser(o, page)); } catch (Exception e) { e.printStackTrace(); } return page; } @Override public Integer webInsertBean(UserBean o) { Integer result = 0; try { Date time = new Date(System.currentTimeMillis()); o.setCreateTime(time); String salt = CipherHelper.createSalt(); o.setPasswd(CipherHelper.createPwdEncrypt(o.getLoginName(), o.getPasswd().toUpperCase(), salt)); o.setSalt(salt); result = userDao.insertBean(o); } catch (Exception e) { e.printStackTrace(); } return result; } @Override public int findCountByLoginName(String loginName) { int result = 0; try { result = userDao.findCountByLoginName(loginName); } catch (Exception e) { e.printStackTrace(); } return result; } @Override public List findListByPhone(String phone) { List users = null; try { users = userDao.findListByPhone(phone); } catch (Exception e) { e.printStackTrace(); } return users; } @Override public int webResetPwd(UserBean o) { int res = 0; try { String pwd = o.getPasswd(); o.setUpdateTime(new Date()); String loginName = o.getLoginName(); // 随机密码,以后发邮箱 String salt = CipherHelper.createSalt(); // String pwrsMD5 = CipherHelper.generatePassword(pwd); String newPwd = CipherHelper.createPwdEncrypt(loginName, pwd.toUpperCase(), salt); o.setPasswd(newPwd); o.setSalt(salt); userDao.resetPwd(o); res = 1; } catch (Exception e) { e.printStackTrace(); } return res; } @Override public List clientUnitTree(UserBean o) { return userDao.clientUnitTree(o); } @Override public List findNewRole(UserBean o) { return userDao.findNewRole(o); } @Override public List findAllClient(UserBean o) { return userDao.findAllClient(o); } @Override public Page findByPageOfBrotherUser(UserBean o, Page page) { try { page.setResults(userDao.findByPageOfBrotherUser(o, page)); } catch (Exception e) { e.printStackTrace(); } return page; } @Override public List getRepairEmpList(Integer id) { return userDao.getRepairEmpList(id); } @Override public List getTecEmp(Integer id) { return userDao.getTecEmp(id); } @Override public List findAllKeeper() { return userDao.findAllKeeper(); } @Override public List getRepairOrg() { return userDao.getRepairOrg(); } @Override public List findRepairTeam(UserBean o) { return userDao.findRepairTeam(o); } @Override public Page findByPageOfNew(UserBean o, Page page) { page.setResults(userDao.findByPageOfNew(o, page)); return page; } @Override public List findBuyersList() { return userDao.findBuyersList(); } @Override public List findCompanyList() { return userDao.findCompanyList(null); } int charuTrue = 0; @Override @Transactional public AjaxRes addUser(UserBean o) { AjaxRes ar = getAjaxRes(); Integer result = 0; try { NewRoleBean[] roles = o.getRoleArr(); boolean flag = false; for (int i = 0; i < roles.length; i++) { if (roles[i].getId() == 1 || roles[i].getId() == 2) { // 具有管理员角色 flag = true; break; } } if (flag) { o.setIfPermiss("1"); } else { o.setIfPermiss("0"); } String loginName = o.getLoginName(); // 查询数据库是否已经存在用户名 if (StringUtils.isNotBlank(loginName) && (userDao.findCountByLoginName(loginName) == 0)) { charuTrue++; String pwrs = "12345678";// 随机密码,以后发邮箱 String pwrsMD5 = CipherHelper.generatePassword(pwrs);// 第一次加密md5, String salt = CipherHelper.createSalt(); o.setPasswd(CipherHelper.createPwdEncrypt(loginName, pwrsMD5, salt)); o.setSalt(salt); o.setCreateTime(new Date()); result = userDao.insertSelective(o); if (result == 0) { ar.setFailMsg("新增人员失败,用户表插入操作错误!"); return ar; } for (NewRoleBean bean : roles) { bean.setUserId(o.getId()); result = newRoleDao.insertRole(bean); if (result == 0) { ar.setFailMsg("新增员工失败,用户与角色关联表插入操作错误!"); return ar; } } } else { ar.setFailMsg("新增人员失败,用户" + loginName + "已存在!"); System.out.println(charuTrue); return ar; } ar.setSucceedMsg("员工账号新增成功!"); } catch (Exception e) { e.printStackTrace(); ar.setFailMsg(e.getMessage()); throw e; } return ar; } @Override public UserBean findOrgId(Integer orgId) { return userDao.findOrgId(orgId); } @Override public UserBean findUserInfoById(UserBean o) { return userDao.findUserInfoById(o); } @Override @Transactional public AjaxRes updateUser(UserBean o) { AjaxRes ar = getAjaxRes(); Integer result = 0; try { NewRoleBean[] roles = o.getRoleArr(); o.setUpdateTime(new Date()); if (roles != null && roles.length > 0) { for (NewRoleBean bean : roles) { if ("delete".equals(bean.getOpt())) { result = newRoleDao.deleteRole(bean); if (result == 0) { throw new ZeroAffectRowsException("员工信息更细失败,用户与角色关联表删除操作错误!"); } } else if ("insert".equals(bean.getOpt())) { result = newRoleDao.insertRole(bean); if (result == 0) { throw new ZeroAffectRowsException("员工信息更细失败,用户与角色关联表插入操作错误!"); } } } } NewRoleBean nrbean = new NewRoleBean(); nrbean.setUserId(o.getId()); List list = newRoleDao.findRoleByUserId(nrbean); boolean flag = false; if (list != null && list.size() != 0) { for (int i = 0; i < list.size(); i++) { if (list.get(i).getId() == 1 || list.get(i).getId() == 2) { flag = true; break; } } } if (flag) { o.setIfPermiss("1"); } else { o.setIfPermiss("0"); } result = userDao.updateByPrimaryKeySelective(o); if (result == 0) { throw new ZeroAffectRowsException("员工信息更新失败,用户表更新操作错误!"); } ar.setSucceedMsg("员工账号更新成功!"); } catch (Exception e) { e.printStackTrace(); ar.setFailMsg(e.getMessage()); throw e; } return ar; } @Override public List findInternalEmp() { return userDao.findInternalEmp(); } @Override public List findAllBuyer(int postId) { UserBean o = new UserBean(); o.setPostId(postId); return userDao.findAllBuyer(o); } @Override public List getUserByEmp() { return userDao.getUserByEmp(); } @Override public List findAllKeeperForOrgId(int orgId) { UserBean o = new UserBean(); o.setOrgId(orgId); return userDao.findAllKeeperForOrgId(o); } @Override public List getListByPost() { return userDao.getListByPost(); } @Override public UserBean getUserInfo(UserBean user) { return userDao.getUserInfo(user); } @Override public List findUserBySelect(UserBean o) { return userDao.findUserBySelect(o); } @Override public List getOrgTreeList(UserBean o) { return userDao.getOrgTreeList(o); } }